
#include <stdio.h>
#include <string.h>

main()
{
unsigned char datos[10];
unsigned char datos1[10];
unsigned char datos2[10];
unsigned char datos3[10];
unsigned char datos4[10];
unsigned char datos5[10];
unsigned long numero;
unsigned char *ptr;
int len;
numero=0;
printf("Maximo numero de bytes <%d>\n",midiReadMaxBytes());


sprintf(datos,"%c%c%c%c%c",0x0a|0x80 , 0x00|0x80 , 0x01|0x080 , 0xff ,0x00); // 5 bytes
sprintf(datos1,"%c%c%c%c%c",0x0a,0x00|0x80,0x01,0xff,0x00); // 1 bytes
sprintf(datos2,"%c%c%c%c%c",0x3a|0x80,0x03,0x01,0xff,0x00); // 2 bytes
sprintf(datos2,"%c%c%c%c%c",0x3a|0x80,0x03,0x01,0xff,0x00); // 1 byte 0

prueba_bytes_numero(datos,5);
prueba_numero_bytes(10154732l);
prueba_bytesStream_numero(datos,5);
prueba_numero_bytesStream(10154732l);
return;

}

prueba_bytes_numero(unsigned char *bytes,int leno)
{
unsigned long numero;
unsigned char misbytes[10];
int len;
printf("----------------------------------\n");
printf("midiReadVarLen.    bytes Varlen -> Numero\n");
printf("  ");
pintabytes(bytes,leno);
len=midiReadVarLen(bytes,&numero,leno);
printf("Resultado len=<%d> numero=<%lu>\n",len,numero);
printf("----------------------------------\n");
printf("midiWriteVarLen.   Numero --> bytes Varlen\n");
printf("numero= <%lu>\n",numero);

len=midiWriteVarLen(numero,&misbytes);
printf("Resultado len=<%d> bytes = ",len);
pintabytes(misbytes,len);
printf("----------------------------------\n");
}
prueba_numero_bytes(unsigned long numero)
{
//unsigned long numero;
unsigned char misbytes[10];
int len;
printf("----------------------------------\n");
printf("midiWriteVarLen.   Numero --> bytes Varlen\n");
printf("numero= <%lu>\n",numero);

len=midiWriteVarLen(numero,&misbytes);
printf("Resultado len=<%d> bytes = ",len);
pintabytes(misbytes,len);
printf("----------------------------------\n");
printf("midiReadVarLen.    bytes Varlen -> Numero\n");
printf("  ");
pintabytes(misbytes,len);
len=midiReadVarLen(misbytes,&numero,len);
printf("Resultado len=<%d> numero=<%lu>\n",len,numero);
printf("----------------------------------\n");
}



prueba_bytesStream_numero(unsigned char *bytes,int leno)
{
unsigned long numero;
unsigned char misbytes[10];
int streamLen;

char streamRet;
int i;
int len;
printf("---------------------------------- Stream\n");
printf("midiStreamReadVarLen.    bytes Varlen -> Numero\n");
printf("  ");
pintabytes(bytes,leno);
//len=midiReadVarLen(bytes,&numero,leno);

midiStreamReadVarLen('0', 0,&numero,&streamLen);
for (i=0;i<leno;i++)
  {
    streamRet=midiStreamReadVarLen(bytes[i], 1,&numero,&streamLen);
	if (streamRet!=0) break;
	
  } 


printf("Resultado ret=<%d> len=<%d> numero=<%lu>\n",streamRet,streamLen,numero);
printf("----------------------------------\n");
printf("midiWriteVarLen.   Numero --> bytes Varlen\n");
printf("numero= <%lu>\n",numero);

len=midiWriteVarLen(numero,&misbytes);
printf("Resultado len=<%d> bytes = ",len);
pintabytes(misbytes,len);
printf("----------------------------------\n");
}
prueba_numero_bytesStream(unsigned long numero)
{
//unsigned long numero;
unsigned char misbytes[10];
int len;
int streamLen;
char streamRet;
int i;
printf("----------------------------------\n");
printf("midiWriteVarLen.   Numero --> bytes Varlen\n");
printf("numero= <%lu>\n",numero);

len=midiWriteVarLen(numero,&misbytes);
printf("Resultado len=<%d> bytes = ",len);
pintabytes(misbytes,len);
printf("----------------------------------\n");
printf("midiReadVarLen.    bytes Varlen -> Numero\n");
printf("  ");
pintabytes(misbytes,len);



midiStreamReadVarLen('0', 0,&numero,&streamLen);
for (i=0;i<len;i++)
  {
    streamRet=midiStreamReadVarLen(misbytes[i], 1,&numero,&streamLen);
	if (streamRet!=0) break;
	
  } 


//len=midiReadVarLen(misbytes,&numero,len);
printf("Resultado ret=<%d> len=<%d> numero=<%lu>\n",streamRet,streamLen,numero);
printf("----------------------------------\n");
}






pintabytes(unsigned char *datos,int len)
{
int i;
for (i=0; i< len;i++)
   printf("%02x ",datos[i]);
printf("\n");   

}


